<script>
	export default {
		data() {
			return {
				// 记录上一个有效的tab页面路径
				lastValidTabPage: '/pages/index/index'
			}
		},
		onLaunch: function() {
			console.log('App Launch');
			// 初始化路由拦截器
			this.initRouteInterceptor();
		},
		onShow: function() {
			console.log('App Show');
		},
		onHide: function() {
			console.log('App Hide');
		},
		methods: {
			// 初始化路由拦截器
			initRouteInterceptor() {
				// 监听页面跳转
				const that = this;
				uni.addInterceptor('navigateTo', {
					invoke(e) {
						return that.checkLoginStatus(e.url) ? e : false;
					}
				});
				
				uni.addInterceptor('switchTab', {
					invoke(e) {
						// 如果不是切换到"我的"页面，更新最后一个有效tab页面
						if (e.url.indexOf('/pages/mine/index') === -1) {
							that.lastValidTabPage = e.url;
						}
						
						if (that.checkLoginStatus(e.url) === false) {
							// 如果是切换到"我的"标签页且未登录，则将当前访问页面保存到全局变量
							uni.setStorageSync('loginRedirect', 'mine_tab');
							
							// 跳转到登录页
							uni.navigateTo({
								url: '/subPackages/login/index'
							});
							return false;
						}
						return e;
					}
				});
				
				uni.addInterceptor('reLaunch', {
					invoke(e) {
						if (e.url.indexOf('/pages/mine/index') === -1) {
							that.lastValidTabPage = e.url;
						}
						return that.checkLoginStatus(e.url) ? e : false;
					}
				});
				
				uni.addInterceptor('redirectTo', {
					invoke(e) {
						if (e.url.indexOf('/pages/mine/index') === -1) {
							that.lastValidTabPage = e.url;
						}
						return that.checkLoginStatus(e.url) ? e : false;
					}
				});
				
				// 监听初始页面加载时的拦截
				this.checkInitialRoute();
			},
			
			// 检查初始路由，处理首次进入应用时直接打开"我的"页面的情况
			checkInitialRoute() {
				const pages = getCurrentPages();
				if (pages.length > 0) {
					const currentPage = pages[pages.length - 1];
					const currentRoute = currentPage.route;
					
					if (currentRoute === 'pages/mine/index') {
						const token = uni.getStorageSync('token');
						if (!token) {
							uni.setStorageSync('loginRedirect', 'mine_tab');
							uni.redirectTo({
								url: '/subPackages/login/index'
							});
						}
					}
				}
			},
			
			// 检查登录状态并处理路由拦截
			checkLoginStatus(url) {
				// 检查是否为需要登录的页面
				if (url.indexOf('/pages/mine/index') !== -1) {
					// 获取token
					const token = uni.getStorageSync('token');
					// 如果没有token（未登录），则返回false，表示需要拦截
					if (!token) {
						return false;
					}
				}
				// 不需要拦截的页面返回true
				return true;
			}
		}
	}
</script>

<style lang="scss">
	/*每个页面公共css */
	/* 引入阿里图标库 */
	@import '@/static/iconfont/iconfont.css';
	
	.iconfont {
		font-family: "iconfont" !important;
		font-size: 16px;
		font-style: normal;
		-webkit-font-smoothing: antialiased;
		-moz-osx-font-smoothing: grayscale;
	}
	
	.icon-feiji:before {
		content: "\e6fa";
	}
	
	.icon-zaixianxuexi:before {
		content: "\e629";
	}
	
	.icon-yingdi:before {
		content: "\e64f";
	}
	
	.icon-gengduo:before {
		content: "\e60a";
	}
	page {
		font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, Segoe UI, Arial, Roboto, 'PingFang SC', 'miui', 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif;
	}
	
	/* 清除默认样式 */
	view, text, navigator, input, image {
		box-sizing: border-box;
		padding: 0;
		margin: 0;
	}
	
	/* 统一图片样式 */
	image {
		will-change: transform;
	}

	/* 全局隐藏滚动条 */
	::-webkit-scrollbar {
		display: none;
		width: 0;
		height: 0;
		color: transparent;
	}
</style>